#pragma once

#include <vector>
#include <string>
#include "Math.h"

class Node;
class UIText;

class Scene
{
public:
	typedef std::vector<Node *> NodeList;
	typedef std::vector<UIText *> TextList;

	Scene(void);
	~Scene(void);

	Node* CreateNode(Node* parent);
	UIText* CreateText(int x, int y, std::string text);

	void DeleteNode(Node* node);

	NodeList& GetNodes() {
		return mNodes;
	}

	TextList& GetTexts() {
		return mUITexts;
	}

	Color& GetBackgroundColor() {
		return mBackgroundColor;
	}

	void SetBackgroundColor(const Color& color) {
		mBackgroundColor = color;
	}

	Node* GetNodeByID(int id);
	UIText* Scene::GetTextByID( int id );

protected:
	NodeList mNodes;
	TextList mUITexts;

	Color mBackgroundColor;

	static int sNodeNum;
};
